#include "AppDelegate.h"
#include "GamePlayScene.h"
#include "ResourceManager.h"
#include "GameManager.h"

#include <vector>

USING_NS_CC;

AppDelegate::AppDelegate() {

}

AppDelegate::~AppDelegate() 
{
}

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    CCDirector* pDirector = CCDirector::sharedDirector();
    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

    pDirector->setOpenGLView(pEGLView);

	pEGLView->setDesignResolutionSize(320, 480, kResolutionFixedWidth);
	
    // turn on display FPS
    pDirector->setDisplayStats(false);

    // set FPS. the default value is 1.0/60 if you don't call this
    pDirector->setAnimationInterval(1.0 / 60);

	// resource for high quality
	CCSize screenSize = CCEGLView::sharedOpenGLView()->getFrameSize();
	std::vector<std::string> searchPaths;
	if(screenSize.width > 320){
		searchPaths.push_back("hd");
		searchPaths.push_back("sd");
		pDirector->setContentScaleFactor(2.0f);
	}
	else{
		searchPaths.push_back("sd");
		pDirector->setContentScaleFactor(1.0f);
	}
	CCFileUtils::sharedFileUtils()->setSearchPaths(searchPaths);

	ResourceManager::getInstance()->loadResource();
	GameManager::getInstance()->beginGame();

    // create a scene. it's an autorelease object
	CCScene* pScene = GamePlayScene::create();

    // run
    pDirector->runWithScene(pScene);

    return true;
}

// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground() {
    CCDirector::sharedDirector()->stopAnimation();

    // if you use SimpleAudioEngine, it must be pause
    // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
    CCDirector::sharedDirector()->startAnimation();

    // if you use SimpleAudioEngine, it must resume here
    // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
